|
An application
server is a program
that provides
services to other
programs, usually
over a network.
An application
server is characterized
by a single server
supporting thousands
of clients simultaneously.
Web servers, business
logic servers,
telecom servers,
VoIP servers,
media streaming
servers, instant
messaging servers,
chat servers and
mail servers are
some examples
of application
servers. An application
server framework
gives the software
infrastructure
to develop such
servers.
The term application
server is
quite generic
and applies to
a wide range of
servers. On one
end of the spectrum
are generic application
servers like a
web server or
a J2EE server,
on which applications
like web-based
email, groupware
and supply-chain
management systems
can be developed.
On the other end
are application
servers for specific
operations like
a telecom server.

Features
of an Application
Server
Some
salient features
that an application
server needs to
provide are the
following:
- Fairness:
The server should
have the ability
to serve several
clients simultaneously.
In the process
of serving several
clients, no
particular client
should be starved
of attention
from the server.
- Robustness:
Any exceptions
that arise during
serving one
client should
not affect the
service provided
to other clients.
The server should
anticipate and
be able to recover
from normal
software errors.
- Manageability:
The server should
allow the operator
to efficiently
manage the available
resources like
CPU time and
memory.
- Maintainability:
The server should
have diagnostics
and alarms to
be able to detect,
log and analyze
expected and
unexpected behavior.
- Security:
The server should
provide sound
security to
its control
and operation,
data and communication.
Some desirable
features that
an application
server needs to
provide are the
following:
- Programmability:
Tools to implement
applications
on the server,
Wizards, GUI,
etc to develop
user interfaces,
code generators
and the like
should be provided.
Programming
should be possible
in commonly
used languages
like C++, Java,
Perl and Python
using popular
idioms and patterns.
- Standards
compliance:
The server should
support adaptors
for standard
protocols like
SOAP, XML RPC,
etc
- Localizability:
The server should
support foreign
languages using
Unicode and/or
UTF-8.
- High
performance:
The server should
make the best
use of the hardware
resources.
- Scalability:
Linear scaling
of capacity
when more hardware
is added is
desirable.
- Portability:
Ability to easily
port the server
to run on a
variety of platforms
like Windows
and various
flavors of Unix
may be desirable.
Application
Server Frameworks
To
provide these
features, an application
server framework
gives libraries,
implementation
of standard design
patterns and tools
to work with these.
Typically, an
application server
framework provides
the following:
- Platform:
Process and
thread infrastructure,
synchronization
mechanisms,
network interfaces,
timers and exception
handling are
provided by
the framework.
Usually it provides
a wrapper around
what the OS
provides.
- Abstract
Data Types:
The framework
provides standard
implementations
of lists, vectors,
strings, hash
tables and the
like.
- Messaging
system:
The framework
provides a messaging
system for the
various components
of the application
to talk to each
other and to
the outside
world.
- Logging:
The framework
provides a module-wise
filterable logging
mechanism and
tools to analyze
the logs.
- Configuration:
The framework
provides a uniform
configuration
mechanism, which
can be easily
adopted by all
extensions and
applications
written on the
framework.
- Management:
The framework
provides a well-defined
architecture
for installing,
deploying and
managing the
components.
- Standard
libraries:
The framework
provides standard
libraries for
common tasks
like DES and
PKI encryption,
XML parsing
and database
connectivity.
Commonly
Available Application
Server Frameworks
There are several
free and commercial
application server
frameworks, which
provide these
features. Some
well-known application
server frameworks
are Jboss, IBM
Websphere, BEA
Weblogic, Apache
Struts, Oracle
AS and the like.
Most of the application
servers are written
in Java. The Java
language, its
libraries and
popular open source
modules like Apache
Tomcat, Apache
LogKit, Apache
Turbine and JSEE
have almost all
the components
essential to a
good application
server. These
have been very
successful in
developing Application
Servers for business
applications.
Synergy’s
Application Server
Framework
However, there
are not many Application
Server Frameworks
targeted towards
high performance
carrier grade
server systems.
Almost all telecom
systems use their
own proprietary
framework. Often
they use proprietary
languages also.
Synergy Retargettable
Application Server
(SyRAS) Framework
is a carrier grade
framework developed
in C++. It is
available for
Linux and Windows.
It has a very
clearly defined
application development
process. It has
tools and wizards
to assist in developing
applications.
SyRAS can give
a tremendous boost
to the development
of VoIP, PoC and
other enterprise
and telecom solutions
in terms of time
to market and
scalability.
Choosing
the Right Framework
It
is vital to choose
the right framework
for any non-trivial
server application.
The main drivers
here are the following.
- Applicability:
Different frameworks
are designed
for different
types of applications.
Some frameworks
have a steep
learning curve
and give good
performance
and reliability.
Some frameworks
have tools to
easily develop
and deploy business
applications.
- Support:
Documentation
and support
are vital to
be able to utilize
the various
features provided
by the framework.
- Talent:
The availability
of talent pool
that is familiar
with the application
server framework
plays a big
role in software
industry characterized
by high attrition
and tight schedules.
Never start a
big server project
from the scratch.
Most of the common
work is already
done and is available
as application
server frameworks.
|